home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / uwb / debug.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.3 KB  |  83 lines

  1. /*
  2.  * Ultra Wide Band
  3.  * Debug Support
  4.  *
  5.  * Copyright (C) 2005-2006 Intel Corporation
  6.  * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
  7.  *
  8.  * This program is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU General Public License version
  10.  * 2 as published by the Free Software Foundation.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  20.  * 02110-1301, USA.
  21.  *
  22.  *
  23.  * FIXME: doc
  24.  * Invoke like:
  25.  *
  26.  * #define D_LOCAL 4
  27.  * #include <linux/uwb/debug.h>
  28.  *
  29.  * At the end of your include files.
  30.  */
  31. #include <linux/types.h>
  32.  
  33. struct device;
  34. extern void dump_bytes(struct device *dev, const void *_buf, size_t rsize);
  35.  
  36. /* Master debug switch; !0 enables, 0 disables */
  37. #define D_MASTER (!0)
  38.  
  39. /* Local (per-file) debug switch; #define before #including */
  40. #ifndef D_LOCAL
  41. #define D_LOCAL 0
  42. #endif
  43.  
  44. #undef __d_printf
  45. #undef d_fnstart
  46. #undef d_fnend
  47. #undef d_printf
  48. #undef d_dump
  49.  
  50. #define __d_printf(l, _tag, _dev, f, a...)                \
  51. do {                                    \
  52.     struct device *__dev = (_dev);                    \
  53.     if (D_MASTER && D_LOCAL >= (l)) {                \
  54.         char __head[64] = "";                    \
  55.         if (_dev != NULL) {                    \
  56.             if ((unsigned long)__dev < 4096)        \
  57.                 printk(KERN_ERR "E: Corrupt dev %p\n",    \
  58.                     __dev);                \
  59.             else                        \
  60.                 snprintf(__head, sizeof(__head),    \
  61.                      "%s %s: ",            \
  62.                      dev_driver_string(__dev),    \
  63.                      __dev->bus_id);        \
  64.         }                            \
  65.         printk(KERN_ERR "%s%s" _tag ": " f, __head,        \
  66.             __func__, ## a);                \
  67.     }                                \
  68. } while (0 && _dev)
  69.  
  70. #define d_fnstart(l, _dev, f, a...)    \
  71.     __d_printf(l, " FNSTART", _dev, f, ## a)
  72. #define d_fnend(l, _dev, f, a...)    \
  73.     __d_printf(l, " FNEND", _dev, f, ## a)
  74. #define d_printf(l, _dev, f, a...)    \
  75.     __d_printf(l, "", _dev, f, ## a)
  76. #define d_dump(l, _dev, ptr, size)        \
  77. do {                        \
  78.     struct device *__dev = _dev;        \
  79.     if (D_MASTER && D_LOCAL >= (l))        \
  80.         dump_bytes(__dev, ptr, size);    \
  81. } while (0 && _dev)
  82. #define d_test(l) (D_MASTER && D_LOCAL >= (l))
  83.